#ifndef _ROBOT_H_
#define _ROBOT_H_
#include <iostream>
#include "Obstacle.h"
#include "Objet.h"
#include "Position.h"
#include "EtatRobot.h"
#include "Affichable.h"


using namespace std;
class EtatRobot;

class Robot : public Affichable {
private:
	EtatRobot* etat;
	EtatRobot* ancienEtat;
	string direction;
	Position position;
	Objet objet;
	Obstacle* obstacle;
public:
	// Constructeur
	Robot();
	Robot(Position p) : position(p){}
	//
	void avancer(int, int);
	void tourner(string);
	void saisir(Objet);
	void poser();
	void figer();
	void repartir();
	int peser();
	void rencontrerObstacle(Obstacle*);
	int evaluerObstacle();

	// Changement d'état
	void changerEtat(EtatRobot*);
	void changerAncienEtat(EtatRobot*);

	// Setters
	void setObjet(Objet);
	void setDirection(string);
	void setObstacle(Obstacle*);
	// Getters
	Obstacle* getObstacle();
	Objet getObjet();
	Position getPosition();
	EtatRobot* getAncienEtat();
	string getDirection();
};

#endif
